package com.java.operator;

/**
 * 算术运算[+ - * / %]
 */
public class Arithmetic {
    public static void main(String[] args) {
        // Java中整数相除只可得到整数，除数或被除数中任意一个数乘1.0即可
        System.out.println(10 / 4); // 2
        System.out.println(10 * 1.0 / 4); // 2.5
        
        System.out.println(1 + 'a'); // 98
        System.out.println('a' + 1); // 98
        System.out.println('a' + 'b'); // 195
        
        // 字符串后出现的+不在进行算术运算，而转变为字符串拼接符
        System.out.println('a' + "bb"); // abb
        System.out.println(1 + 'a' + "bb"); // 98bb
        System.out.println("bb" + 'a'); // bba
        System.out.println("bb" + 'a' + 1); // bba1
        System.out.println("bb" + ('a' + 1)); // bb98
        System.out.println(1 + 'a' + "bb" + 'a' + 1); // 98bba1
        
        // byte x,y=3,z=4;判断下列语句的正确性
        //  x = y + z 错，byte参与运算自动类型提升到int
        //  x = 3 + 4 对，常量会先计算，再判断计算结果是否在赋值变量范围内，不在才会类型提升后报错
        
        // float f = (float) 12.345 和 float f = 12.345F 的区别？
        //  float f = (float) 12.345涉及到强制类型转换，将double转为float
        //  float f = 12.345F本来就是float类型
        
        // long占8字节，float占4字节，为什么long提升为float？
        //  二者的底层存储结构不同，float能表示的数据范围比long更大
    }
}
